package lispinterpreter;

import java.util.Scanner;

/**
 * Clase principal del interprete.
 * 
 * @author setian
 */
public class Main
{
    
    /**
     * Clase con el mensaje de bienvenida.
     */
    private static Print print = new Print();
    
    /**
     * @param args the command line arguments
     * @throws ParametersException
     */
    public static void main(String[] args) throws ParametersException
    {
	
	// Imprime un mensaje de bienvenida
	print.welcomeMsg();
	
	int numIns = 0;		// Número de instrucciones evaluadas.
	
	Scanner comando = new Scanner(System.in);
	String comandos = "";
	BlackBox resultado = new BlackBox();
	try
	{
	    while (!comandos.equals("(salir)"))
	    {
		System.out.print("[" + numIns + "]> ");
		comandos = comando.nextLine();
		LispList lista = LispParser.parse(comandos);
		
		LispList listaresultado = resultado.evaluate(lista);
		listaresultado.printLispList();
		numIns++;
	    }
	    
	} catch (Exception e)
	{
	    System.out.println("Adios!");
	}
	
    }
}
